home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 September / PCWorld_2008-09_cd.bin / v cisle / sadanastroju / delicious_bookmarks-2.0.64-fx.xpi / chrome / deliciousBookmarks.jar / content / introWiz.js < prev    next >
Encoding:
Text File  |  2008-06-19  |  17.3 KB  |  454 lines

  1. var gYBLoginWindow = null;
  2. var gYBWizard = null;
  3. var gYBWizardStrings = null;
  4. var gYBTotalBookmarks = 0;
  5. var gYBObservService = null;
  6.  
  7. var YBXULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
  8.  
  9. var YBcookieObserver = {
  10.  
  11.    observe: function(subject, topic, data) {
  12.       // if cookie is added
  13.          if ( data == "loggedin" ) {
  14.           try {           
  15.              //No need to look at host as logged in message comes after verification
  16.             //if ( subject.host == prefDomain && cookie.name == "_user" ) {
  17.                if ( gYBLoginWindow ) {
  18.                   try { 
  19.                     gYBLoginWindow.close();
  20.                   } catch (e) {
  21.                     //do nothing
  22.                   } finally {
  23.                     gYBLoginWindow = null;
  24.                   }
  25.                   var wizardMain = document.getElementById( "intro-wizard" );
  26.                   if (wizardMain.currentPage.id == "yb-wiz-welcome") {
  27.                      yb_updateWizWelcomePage();
  28.                   }
  29.                }
  30.             //}
  31.           } catch ( e ) {
  32.             yDebug.print("Introwiz loginwindow close failed: " + e, YB_LOG_MESSAGE);          
  33.           }
  34.          }
  35.    }
  36. };
  37.  
  38. function yb_CleanupWizard() {
  39.    gYBObservService = Components.classes["@mozilla.org/observer-service;1"].
  40.                        getService( Components.interfaces.nsIObserverService);
  41.    gYBObservService.removeObserver( YBcookieObserver, "ybookmark.userChanged" );
  42.  
  43.    document.getElementById('yb-wiz-welcome-terms').
  44.         removeEventListener( 'click', yb_wizard_openTermsWindow, false );
  45.  
  46.    document.getElementById( 'yb-wiz-welcome-login').
  47.        removeEventListener( 'click', yb_wizard_openLoginWindow, false );
  48.    document.getElementById( 'yb-wiz-welcome-login-another').
  49.        removeEventListener( 'click', yb_wizard_openLoginWindow, false );
  50.  
  51.    document.getElementById( 'yb-wiz-welcome-create-account').
  52.       removeEventListener( 'click', yb_wizard_openCreateUserWindow, false );
  53.    document.getElementById( 'yb-wiz-welcome-create-account-another').
  54.       removeEventListener( 'click', yb_wizard_openCreateUserWindow, false );
  55.  
  56.    document.getElementById('yb-wiz-done-tour').
  57.       removeEventListener( 'click', yb_wizard_openTourWindow, false );
  58.  
  59.    if (gYBLoginWindow) {
  60.      try {
  61.       gYBLoginWindow.close();
  62.      } catch (e) {
  63.       //nothing
  64.      } finally {
  65.       gYBLoginWindow = null;
  66.      }
  67.    }
  68.  
  69. }
  70.  
  71. function yb_EngineInstalled() {
  72.    var pref = Components.classes["@mozilla.org/preferences-service;1"].
  73.          getService(Components.interfaces.nsIPrefBranch);
  74.    pref.setBoolPref("extensions.ybookmarks@yahoo.engine.installed", true);
  75.   
  76.    var ss = Components.classes["@mozilla.org/ybookmarks-sync-service;1"].
  77.          getService(Components.interfaces.nsIYBookmarkSyncService);
  78.    ss.allowSync();
  79. }
  80.  
  81. function yb_FinishWizard() {
  82.   //yb_EngineInstalled();
  83. }
  84.  
  85. function yb_wizard_openWindow(aUrl, aTitle, aWidth, aHeight) {
  86.   // yes, it's hacky.  yes, it works.
  87.   try {
  88.     gYBLoginWindow.location.href = aUrl;
  89.   } catch (e) {
  90.     gYBLoginWindow = ybookmarksUtils.openWindow(aUrl, aTitle, aWidth, aHeight);
  91.   } finally {
  92.     gYBLoginWindow.focus();
  93.   } 
  94. }
  95.  
  96. function yb_wizard_openTermsWindow() {
  97.    yb_wizard_openWindow(deliciousService.getUrl("help/terms"), 
  98.                         "Terms of Service", 
  99.                         800, 600);
  100. }
  101.  
  102. function yb_wizard_openLoginWindow() {
  103.   yb_wizard_openWindow( deliciousService.getLoginUrl(), 
  104.                             "Login into Social bookmarking service", 
  105.                             800, 600 );
  106. }
  107.  
  108. function yb_wizard_openCreateUserWindow() {
  109.   yb_wizard_openWindow( deliciousService.getCreateUserUrl(), 
  110.                         "Create New User",
  111.                         800, 600 );
  112. }
  113.  
  114. function yb_wizard_openTourWindow() {
  115.   yb_wizard_openWindow( deliciousService.getTourUrl(), 
  116.                         "Tour", 
  117.                         800, 600 );
  118. }
  119.  
  120. function yb_initWizard() {
  121.    try {
  122.      var ss = Components.classes["@mozilla.org/ybookmarks-sync-service;1"].
  123.             getService(Components.interfaces.nsIYBookmarkSyncService);
  124.      ss.cancelSync();
  125.       
  126.        gYBWizard = document.getElementById( "intro-wizard" );
  127.        gYBWizardStrings = document.getElementById( "yb-wizard-strings");
  128.        document.getElementById( "intro-wizard" ).goTo( "yb-wiz-intro" );
  129.  
  130.        document.getElementById('yb-wiz-welcome-terms').addEventListener( 
  131.           'click', yb_wizard_openTermsWindow, false );
  132.       
  133.        document.getElementById( 'yb-wiz-welcome-login').addEventListener( 
  134.           'click', yb_wizard_openLoginWindow, false );
  135.        document.getElementById( 'yb-wiz-welcome-login-another').addEventListener( 
  136.           'click', yb_wizard_openLoginWindow, false );
  137.           
  138.        document.getElementById( 'yb-wiz-welcome-create-account').addEventListener( 
  139.           'click', yb_wizard_openCreateUserWindow, false );
  140.        document.getElementById( 'yb-wiz-welcome-create-account-another').addEventListener( 
  141.           'click', yb_wizard_openCreateUserWindow, false );
  142.  
  143.        document.getElementById('yb-wiz-done-tour').addEventListener( 
  144.           'click', yb_wizard_openTourWindow, false );
  145.  
  146.        gYBObservService = Components.classes["@mozilla.org/observer-service;1"].
  147.        getService( Components.interfaces.nsIObserverService);
  148.        gYBObservService.addObserver( YBcookieObserver, "ybookmark.userChanged", false ); 
  149.        
  150.        if(ybookmarksUtils.getFFMajorVersion() > 2) {        
  151.         gYBTotalBookmarks = yb_findTotalBookmarksFF3();
  152.        } else {
  153.         gYBTotalBookmarks = yb_findTotalBookmarks();
  154.        }
  155.        
  156.    } catch (e) {
  157.       yDebug.print("Wizard failed: " + e, YB_LOG_MESSAGE);
  158.    }   
  159. }
  160.  
  161. function yb_removeAllChildren(node) {
  162.    while ( node.firstChild ) {
  163.       node.removeChild ( node.firstChild );
  164.    }
  165. }
  166.  
  167. function yb_setHeaderStep(aStep) {
  168.      var header = document.getAnonymousElementByAttribute(document.getElementById( "intro-wizard" ),
  169.                                               "anonid",
  170.                                               "Header");
  171.      var box = document.getAnonymousElementByAttribute(header, "class", "wizard-header-box-text");                         
  172.    
  173.    var stepLabel;
  174.    for (var i=0; i < box.childNodes.length; i++) {
  175.      var child = box.childNodes[i];
  176.      if (child.id == "yb-wizard-header-label-step") {
  177.        stepLabel = child;
  178.        break;
  179.      }
  180.    }
  181.  
  182.    if (!stepLabel) {
  183.      stepLabel = document.createElementNS(YBXULNS, "label");
  184.      stepLabel.setAttribute("class", "yb-wizard-header-label-step");
  185.      stepLabel.setAttribute("id", "yb-wizard-header-label-step");
  186.      box.appendChild(stepLabel);
  187.    }
  188.    
  189.    stepLabel.setAttribute("value", aStep);
  190. }
  191.  
  192. function yb_updateWizIntroPage() {
  193.   var next = document.getElementById( "intro-wizard" ).getButton("next");
  194.     yb_setHeaderStep(gYBWizardStrings.getString("extensions.ybookmarks.wiz.intro.step"));
  195.       
  196.   next.focus();
  197. }
  198.  
  199. function yb_updateWizWelcomePage() {
  200.      var service = deliciousService.getServiceName();
  201.      var username = deliciousService.getUserName();
  202.      var loggedIn = document.getElementById("yb-wiz-welcome-logged-in");                                                  
  203.      var notLoggedIn = document.getElementById("yb-wiz-welcome-not-logged-in");                                                  
  204.  
  205.      yb_setHeaderStep(gYBWizardStrings.getString("extensions.ybookmarks.wiz.welcome.step"));
  206.      if (username) {
  207.        var next = gYBWizard.getButton("next");
  208.       /* var cont = document.getElementById("yb-wiz-welcome-continue");
  209.          if (cont.childNodes.length <= 1) {
  210.          var contText = document.createTextNode(
  211.                             gYBWizardStrings.getFormattedString("extensions.ybookmarks.wiz.welcome.continue",
  212.                                                           [next.label]));
  213.          cont.insertBefore(contText, cont.firstChild);
  214.          cont.appendChild(document.createTextNode("."));
  215.        }*/
  216.          loggedIn.hidden = false;
  217.        notLoggedIn.hidden = true;
  218.        document.getElementById("yb-wiz-welcome-current-user").setAttribute("value", username);                                                  
  219.        gYBWizard.canAdvance = true;
  220.      } else {
  221.         loggedIn.hidden = true;
  222.         notLoggedIn.hidden = false;
  223.         gYBWizard.canAdvance = false;
  224.      }
  225. }
  226.  
  227. function yb_rewindWizWelcomePage() {
  228.   gYBWizard.canAdvance = true;
  229. }
  230.  
  231. function yb_updateWizBasicSetupPage() {
  232.  
  233.    var service = deliciousService.getServiceName();
  234.    var username = deliciousService.getUserName();
  235.    var importDesc = document.getElementById( "yb-wiz-setup-import-desc" );
  236.    var importYes = document.getElementById( "yb-wiz-setup-import-yes" );
  237.    var importNo = document.getElementById( "yb-wiz-setup-import-no" );
  238.    
  239.    var totalNumberOfBookmarks = gYBTotalBookmarks;
  240.  
  241.    yb_setHeaderStep(gYBWizardStrings.getString("extensions.ybookmarks.wiz.setup.step"));
  242.  
  243.    if (importDesc.childNodes.length == 0) {
  244.      importDesc.appendChild(document.createTextNode(gYBWizardStrings.getFormattedString( 
  245.                                      "extensions.ybookmarks.wiz.setup.import.desc", 
  246.                                      [ totalNumberOfBookmarks, service ] ) ));
  247.    }
  248.  
  249.    importYes.setAttribute( "label",  gYBWizardStrings.getFormattedString( 
  250.                                    "extensions.ybookmarks.wiz.setup.import.yes", 
  251.                                    [ username, service ] ) );
  252.     
  253.     importNo.setAttribute( "label",  gYBWizardStrings.getString( "extensions.ybookmarks.wiz.setup.import.no" ));
  254.  
  255. }
  256.  
  257. function yb_checkImportChoice() {
  258.    var importRadio = document.getElementById("yb-wiz-setup-import-yes");
  259.    if( importRadio.selected ) {
  260.       document.getElementById( "yb-wiz-setup" ).setAttribute( "next", "yb-wiz-setup-advance" );
  261.    }
  262.    else {
  263.       document.getElementById( "yb-wiz-setup" ).setAttribute( "next", "yb-wiz-done" );
  264.    }
  265.    return true;
  266. }
  267.  
  268. function yb_rewindWizAdvanceSetupPage() {
  269.   document.getElementById( "yb-wiz-setup" ).setAttribute( "next", "yb-wiz-done" );
  270. }
  271.  
  272. function yb_updateWizAdvanceSetupPage() {
  273.     var easy = document.getElementById("yb-wiz-setup-import-type-easy");  
  274.     var advanced = document.getElementById("yb-wiz-setup-advance-import-options");
  275.     var custom = document.getElementById("yb-wiz-setup-import-type-custom");
  276.     
  277.     yb_setHeaderStep(gYBWizardStrings.getString("extensions.ybookmarks.wiz.setup.advance.step"));
  278.     
  279.     if (easy.selected) {
  280.       advanced.hidden = true;
  281.     } else {
  282.       advanced.hidden = false;
  283.     }  
  284. }
  285.  
  286.  
  287. function yb_importTypeSelected(event) {
  288.   var advanced = document.getElementById("yb-wiz-setup-advance-import-options");
  289.   
  290.   if (event.target.value==1) {
  291.    advanced.hidden = false; 
  292.   } else {
  293.     advanced.hidden = true;
  294.   }
  295. }
  296.  
  297.  
  298. function _getContentsRecursively(node, count) {
  299.      if(!node) {        
  300.         return;        
  301.      }
  302.      
  303.      var Ci = Components.interfaces;                   
  304.      //Handle bookmarks
  305.      if(node.type == Ci.nsINavHistoryResultNode.RESULT_TYPE_URI) {
  306.         yDebug.print("Bookmark: " + node.title);
  307.         //1 is the count.        
  308.         return 1;
  309.      }
  310.      
  311.      //Handle folders
  312.      if(node.type == Ci.nsINavHistoryResultNode.RESULT_TYPE_FOLDER) {
  313.          //Check to avoid Smart Bookmarks and Live Bookmarks.          
  314.          if(node.parent && (Application.bookmarks.toolbar.title == node.parent.title)) {
  315.              yDebug.print("Ignoring folder as parent is toolbar:" + node.title);   
  316.              return 0;          
  317.          }
  318.          var container = node.QueryInterface(Ci.nsINavHistoryContainerResultNode);     
  319.          var containerCount = 0;
  320.          if(container) {
  321.             container.containerOpen = true;            
  322.             //yDebug.print("->" + node.title + " -> has " + container.childCount + " children \n",YB_LOG_MESSAGE);
  323.             for (var i = 0; i < container.childCount; i++) {
  324.                 var newNode = container.getChild(i);                                
  325.                 containerCount += _getContentsRecursively(newNode);                
  326.                 //yDebug.print("Child: " + node.title + " and result type is :" + node.type +  "\n", YB_LOG_MESSAGE);
  327.             }        
  328.             container.containerOpen = false;
  329.          }
  330.          return containerCount;
  331.      }     
  332.      return 0;
  333. }
  334.  
  335. function yb_findTotalBookmarksFF3() {
  336.     try {
  337.         var historyService = Components.classes["@mozilla.org/browser/nav-history-service;1"]
  338.                                       .getService(Components.interfaces.nsINavHistoryService);
  339.         var options = historyService.getNewQueryOptions();
  340.         var query = historyService.getNewQuery();
  341.         var bookmarksService = Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"]
  342.                                          .getService(Components.interfaces.nsINavBookmarksService);
  343.  
  344.         var foldersToSearch = new Array(bookmarksService.toolbarFolder,
  345.                                         bookmarksService.unfiledBookmarksFolder,
  346.                                         bookmarksService.bookmarksMenuFolder);
  347.         var count = 0;                                    
  348.         for (x in foldersToSearch) {
  349.             query.setFolders([foldersToSearch[x]], 1);           
  350.             var result = historyService.executeQuery(query, options);           
  351.             var rootNode = result.root;            
  352.             //yDebug.print("Node type of ROOT is:" + rootNode.type + " and title is :" + rootNode.title, YB_LOG_MESSAGE);        
  353.             count += _getContentsRecursively(rootNode);
  354.         }      
  355.         yDebug.print("yb_findTotalBookmarksFF3()::=>Total bookmarks count is: " + count, YB_LOG_MESSAGE);
  356.         return count;
  357.     } catch(e) {
  358.         yDebug.print("Exception in yb_findTotalBookmarksFF3()::=>" + e, YB_LOG_MESSAGE); 
  359.         return 0;  
  360.     }
  361. }
  362.  
  363. function yb_findTotalBookmarks() {
  364.    var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
  365.    getService( Components.interfaces.nsIRDFService);
  366.    var bookmarks = rdfService.GetDataSource( "rdf:bookmarks" );
  367.    bookmarks = bookmarks.QueryInterface ( Components.interfaces.nsIBookmarksService );
  368.    bookmarks.readBookmarks();
  369.  
  370.    var typeResource = rdfService.GetResource ( "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" );
  371.    var bookmarkResource = rdfService.GetResource ( "http://home.netscape.com/NC-rdf#Bookmark" );
  372.    var allResources = bookmarks.GetAllResources();
  373.    var totalBookmarks = 0;
  374.    while ( allResources.hasMoreElements() ) {
  375.       var rsc = allResources.getNext();
  376.       var type = bookmarks.GetTarget( rsc, typeResource, true );
  377.       try {
  378.          type.QueryInterface ( Components.interfaces.nsIRDFResource );
  379.          if (type.EqualsNode( bookmarkResource ) )
  380.             ++totalBookmarks;
  381.       } catch ( e ) {
  382.       }
  383.    }
  384.  
  385.    return totalBookmarks;
  386.  
  387. }
  388.  
  389. function yb_updateWizImportingPage() {
  390.   var click = document.getElementById("yb-wiz-importing-click");
  391.   var cancel = gYBWizard.getButton("cancel");
  392.   var back = gYBWizard.getButton("back");
  393.   cancel.hidden = true;
  394.   back.hidden = true;
  395.   
  396.   yb_setHeaderStep(gYBWizardStrings.getString("extensions.ybookmarks.wiz.importing.step"));
  397.   
  398.   
  399.   if (click.childNodes.length == 0) {
  400.     var next = gYBWizard.getButton("next");
  401.     var clickString = gYBWizardStrings.getFormattedString("extensions.ybookmarks.wiz.importing.click",
  402.                                       [next.label]);
  403.                                       
  404.     click.appendChild(document.createTextNode(clickString));
  405.   }
  406.   
  407.   var options = document.getElementById("yb-wiz-setup-advance-import-options");
  408.   var custom = document.getElementById("yb-wiz-setup-import-type-custom");
  409.   
  410.   if (!custom.selected) {
  411.     options.setToDefaults();
  412.   }
  413.  
  414.   var args = YBJSON.stringify({ addTags: (options.addTags ? options.addTagsAsArray : []), 
  415.                                 addPopularTags: options.addPopularTags, 
  416.                                 replaceDuplicates: options.replaceDuplicates, 
  417.                                 filePath: ""});
  418.                                    
  419.   var xpcArgs = Components.classes["@mozilla.org/supports-string;1"].
  420.                   createInstance(Components.interfaces.nsISupportsString);
  421.   var xpcSubject = Components.classes["@mozilla.org/supports-string;1"].
  422.                       createInstance(Components.interfaces.nsISupportsString);
  423.   xpcSubject.data = "startImport";
  424.   xpcArgs.data = args;
  425.           
  426.   gYBObservService.notifyObservers(xpcSubject, "ybookmark.importBookmarks", xpcArgs);
  427.   /*
  428.   ybookmarksUtils.startImport((options.addTags ? options.addTagsAsArray : []), 
  429.                               options.addPopularTags, 
  430.                               options.replaceDuplicates, 
  431.                               null);    
  432.   */
  433.   yb_EngineInstalled();
  434.  
  435. }
  436.  
  437. function yb_hideWizImportingPage() {
  438. }
  439.  
  440. function yb_updateWizDonePage() {
  441.   yb_setHeaderStep(gYBWizardStrings.getString("extensions.ybookmarks.wiz.done.step"));
  442.   
  443.   yb_EngineInstalled();
  444.  
  445. }
  446.  
  447. function yb_CancelWizard() {
  448.     var rv = window.arguments[0];
  449.     window.openDialog( "chrome://ybookmarks/content/introWizCancelled.xul",
  450.            "", "chrome,dialog,centerscreen,modal,resizable=no", rv );
  451.  
  452.     return rv.aborted;
  453. }
  454.